package com.myway.dto.pnr.domain;

import java.util.HashMap;

/**
 * PNR入库提示信息
 * @author yongm_wang
 *
 */
public enum PnrInAlertMsg {
	/**
	 * 乘客中含有不正确SSR FOID NI格式的身份证件项或未含身份证件项。

	 */
	NI_ERROR("NI_ERROR"),	
	/**
	 * 请确认PNR为时限票编码，不是已出票状态。对于出票时限项，本系统只接收如下格式：TK:TL/1200/15AUG/HAK123。

	 */
	TL_ERROR("TL_ERROR"),	
	/**
	 * 为确保您的PNR能入库成功，且能正确出票，请确认作入库的PNR有完整的姓名组、航段组、联系组、SSR FOID、出票时限这五项。

	 */
	FULL_PNR_ERROR("FULL_PNR_ERROR"),	 
	/**
	 * 所入库的PNR必须在航班起飞前两个小时操作，否则不能入库。

	 */
	TIME_OUT_ERROR("TIME_OUT_ERROR"),	
	/**
	 * 建议单航段PNR最多不能超过40个人，往返最多不能超过20个人。

	 */
	OVER_LOADING_ERROR("OVER_LOADING_ERROR"),	 
	/**
	 * 姓名一样的旅客不能在同一个PNR里出票，否则无法值机。

	 */
	REPEAT_PAX_ERROR("REPEAT_PAX_ERROR"),	
	/**
	 * 请不要在入库的PNR中输入FC和FN项。

	 */
	EXSIT_FCFN_ERROR("EXSIT_FCFN_ERROR"),	
	/**
	 * 只有满足PNR的状态是“HK、KK、TK、RR”状态且没有产生票号才允许入库。

	 */
	ACTION_CODE_ERROR("ACTION_CODE_ERROR"),	
	/**
	 * 已产生票号不允许入库。

	 */
	EXSIT_TNO_ERROR("EXSIT_TNO_ERROR"),	
	/**
	 * 婴儿超龄，不能出婴儿票。

	 */
	INFANT_OVERAGE_ERROR("INFANT_OVERAGE_ERROR"),	
	/**
	 * 儿童超龄，不能出儿童票。	
	 */
	CHILD_OVERAGE_ERROR("CHILD_OVERAGE_ERROR"),	
	/**
	 * PNR中同时包含成人和儿童不能入库。

	 */
	CONTAIN_PAX_ERROR("CONTAIN_PAX_ERROR"),	
	/**
	 *  大于两个航段不能入库。

	 */
	SEGMENT_NUM_ERROR("SEGMENT_NUM_ERROR"), 
	/**
	 * 电子客票网站未开通该PNR中所包含的航段。

	 */
	SEGMENT_INVALID_ERROR("SEGMENT_INVALID_ERROR"),
	/**
	 * PNR无匹配产品，无法入库。

	 */
	NOT_EXSIT_PRODUCT_ERROR("NOT_EXSIT_PRODUCT_ERROR"),
	/**
	 * PNR已有入库记录，不能重复入库。

	 */
	EXSIT_PNR("EXSIT_PNR"),
	/**
	 * 证件类型有误，系统仅支持NI证件类型的PNR入库，请将证件类型统一设置成NI处理。

	 */
	CTYPE_ERROR("CTYPE_ERROR"),
	/**
	 * 成人姓名是中文不超过10个汉字
	 */
	ADULT_CHINESE_NAME_OUT_OF_RANGE("ADULT_CHINESE_NAME_OUT_OF_RANGE"),
	
	/**
	 * 婴儿姓名是中文不超过5个汉字
	 */
	INFANT_CHINESE_NAME_OUT_OF_RANGE("INFANT_CHINESE_NAME_OUT_OF_RANGE"),
	
	/**
	 * 成人英文是长度不能超过23个字符
	 */
	ADULT_ENGLISH_NAME_OUT_OF_RANGE("ADULT_ENGLISH_NAME_OUT_OF_RANGE"),
	
	/**
	 * 婴儿姓名是英文不超过10个字符
	 */
	INFANT_ENGLISH_NAME_OUT_OF_RANGE("INFANT_ENGLISH_NAME_OUT_OF_RANGE"),
	/**
	 * 手机号格式不正确
	 */
	CONTACT_NO_INCORRECT("CONTACT_NO_INCORRECT"),
	/**
	 * PNR中包含非本航空公司的航班。

	 */
	AIRLINE_CODE_ERROR("AIRLINE_CODE_ERROR"),
	/**
	 * PNR中未包含CT联系组信息，请补充。

	 */
	CONTRACT_NOT_EXIST("CONTRACT_NOT_EXIST"),
					
	/**
	 * OSI项中有G舱编码的标识，不能在散客电子客票网入库,可以到团队网出票，网址 http://gt.hnair.com/gt 
	 */
	OSI_G_CABIN_EXIST("OSI_G_CABIN_EXIST");
	
	/**
	 * Alias name. This is the name which will be stored in database.
	 */
	private final String alias;

	/**
	 * A hash map which keep all the action enum with alias name as key.
	 */
	private static HashMap<String, PnrInAlertMsg> map;

	/**
	 * Construct the hash map at load time
	 */
	static 
	{
		map = new HashMap<String, PnrInAlertMsg>();
		for (PnrInAlertMsg type : PnrInAlertMsg.values()) {
			map.put(type.alias, type);
		}
	}

	PnrInAlertMsg(String alias) 
	{
		this.alias = alias;
	}

	@Override
	public String toString()
	{
		return this.alias;

	}

	/**
	 * Return a <code>Action</code> object holding the value of specified alias name
	 *
	 * @param alias
	 *            the alias name of the type
	 *
	 * @return a <code>Action</code> object holding the value represented by the alias name
	 *         argument
	 */
	public static PnrInAlertMsg valueOfAlias(String alias) 
	{
		PnrInAlertMsg type = map.get(alias);

		if (type == null) {
			throw new IllegalArgumentException("Unknown action alias [" + alias + "]");
		}

		return type;
	}

	/**
	 * @return the alias
	 */
	public String getAlias() {
		return this.alias;
	}
}
